package LinkedListSeries;

public class RemoveElementsSolution_203_2 {
    public ListNode removeElements(ListNode head, int val) {
        // 由于删除链表头结点的方式和删除后续节点的方式不同
        // 设置一个虚拟头结点，虚拟头结点dummy指向原本的头结点
        // 基本思路：虚拟头结点，统一节点的删除逻辑

        ListNode dummy = new ListNode();
        dummy.next = head;

        // 设置一个操作结点cur
        ListNode cur = dummy;
        while (cur.next != null) {
            if (cur.next.val == val) {
                cur.next = cur.next.next;
            } else {
                cur = cur.next;
            }
        }
        return dummy.next;
    }
}

